package org.totoro.memory.oom;

/**
 * 有一种内核作业（Kernel Job）名为 Out of Memory Killer，它会在可用内存极低的情况下“杀死
 * ”（kill）某些进程。OOM Killer 会对所有进程进行打分，然后将评分较低的进程“杀死”，具体的评
 * 分规则可以参考 Surviving the Linux OOM Killer。
 * <p>
 * 不同于其他的 OOM 错误， Killprocessorsacrifice child 错误不是由 JVM 层面触发的，而是由操作系统层面触发的。
 * <p>
 * 原因分析
 * 默认情况下，Linux 内核允许进程申请的内存总量大于系统可用内存，通过这种“错峰复用”的方
 * 式可以更有效的利用系统资源。 然而，这种方式也会无可避免地带来一定的“超卖”风险。例如某
 * 些进程持续占用系统内存，然后导致其  进程没有可用内存。此时，系统将自动激活 OOM Killer，
 * 寻找评分低的进程，并将其“杀死”，释放内存资源。
 * <p>
 * 解决方案
 * 1、升级服务器配置/隔离部署，避免争用。
 * 2、OOM Killer 调优。
 *
 * @author daocr
 * @date 2020/3/2
 */
public class KillProcessOrSacrificeChild {
}
